package collection;

import exception.CollectionEmptyException;

// functional list
public interface IList<E> {
	
	public E first() throws CollectionEmptyException;
	
	public IList<E> rest() throws CollectionEmptyException;
	
	public boolean isEmpty();
	
	public <T> T accept(IListVisitor<E, T> visitor);
}
